#include <stdio.h>  
#include <stdlib.h>  // abs 


int main() {
    // step 1# 读取指令数量和最终位置
    int commandNum;   // 指令数量
    int finalX;       // 最终的 X 坐标
    scanf("%d %d", &commandNum, &finalX);  // 读取输入

    // step 2# 定义数组用于存储每条指令对应的X坐标和Y偏移量
    int x[commandNum];         // 每条指令的X坐标
    int offsetY[commandNum];   // 每条指令对Y的偏移量

    // step 3# 读取每条指令的X坐标和对应的Y偏移量
    for(int i = 0; i < commandNum; i++) {
        scanf("%d %d", &x[i], &offsetY[i]);  // 读取一条指令
    }

    // step 4# 初始化面积计算变量
    long long int area = 0;  // 累积面积，使用 long long 防止溢出
    int curY = 0;            // 当前Y坐标

    // step 5# 遍历每条指令，累加矩形面积
    for(int i = 0; i < commandNum - 1; i++) {
        int diffX = x[i+1] - x[i];  // 相邻指令间的X差值（矩形宽度）
        curY += offsetY[i];        // 更新当前Y坐标
        area += diffX * abs(curY); // 当前矩形面积 = 宽 × 高（取绝对值）
    } 

    // step 6# 处理最后一个指令到终点的矩形面积
    curY += offsetY[commandNum - 1];                // 累加最后一次Y偏移
    area += abs(curY) * (finalX - x[commandNum - 1]); // 最后一段面积

    // step 7# 输出最终计算得到的面积
    printf("%lld\n", area);  // 输出结果

    return 0;
}
